package com.psychologyCommunity.Community.config;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {
    //代表这个bean 肯定是要被spring 容器 所管理，所装配，我们要装配的肯定是这个组件的核心的对象
    //kaptcha 他核心的对象是Producer  所以肯定是实例化 的这个接口类型的对象
    //这个bean能在服务启动的时候自动装配到容器里，我们通过容器就能得到一个produce实例，我们通过实例 就能创建验证码 创建图片
    @Bean
    public Producer kaptchaProducer(){
        Properties properties=new Properties();
        properties.setProperty("kaptcha.image.width","150");
        properties.setProperty("kaptcha.image.height","60");
        properties.setProperty("kaptcha.textproducer.font.size","36");
        properties.setProperty("kaptcha.textproducer.font.color","blue");
        properties.setProperty("kaptcha.textproducer.char.string","123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");//随机字符串在哪些中随机生成
        properties.setProperty("kaptcha.textproducer.char.length","4");//长度的限定
        properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");//长度的限定

        //我们实例化的肯定接口Producer的实现类--DefaultKaptcha
        DefaultKaptcha kaptcha=new DefaultKaptcha();

        //我们需要给他传入一些参数，我们需要把这些参数封装到对象里-
        // -所有的配置项都是通过config去配的，而config它需要依赖于Producer 的实例化对象
        Config  config=new Config(properties);
        //然后把 Config对象 封装到kaptcha组件中
        kaptcha.setConfig(config);
        return kaptcha;
    }

}
